package com.chenjiagou.ordertickets.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class IdCardUtils {
    /**
     * 从身份证号码中提取出生日期
     * @param idCard 身份证号码
     * @return 出生日期（Date对象），如果格式错误返回null
     */
    public static Date extractBirthday(String idCard) {
        if (idCard == null || idCard.isEmpty()) {
            return null;
        }

        // 去除空格
        idCard = idCard.trim();

        try {
            if (idCard.length() == 18) {
                // 18位身份证：第7-14位为出生日期 (YYYYMMDD)
                String birthStr = idCard.substring(6, 14);
                return new SimpleDateFormat("yyyyMMdd").parse(birthStr);
            } else if (idCard.length() == 15) {
                // 15位身份证：第7-12位为出生日期 (YYMMDD)，年份需补全为19YY
                String birthStr = "19" + idCard.substring(6, 12);
                return new SimpleDateFormat("yyyyMMdd").parse(birthStr);
            }
        } catch (ParseException | StringIndexOutOfBoundsException e) {
            // 身份证格式错误
            e.printStackTrace();
        }

        return null;
    }

    /**
     * 从身份证号码中提取出生日期（字符串格式）
     * @param idCard 身份证号码
     * @return 出生日期字符串（YYYY-MM-DD），如果格式错误返回null
     */
    public static String extractBirthdayStr(String idCard) {
        Date date = extractBirthday(idCard);
        if (date == null) {
            return null;
        }
        return new SimpleDateFormat("yyyy-MM-dd").format(date);
    }
}
